package com.xzy.sms.web.utils.velocity;

import java.util.List;

/**
 * 第一级菜单
 * 
 * @author macong
 * @since 1.0
 * @version 2014-04-10 macong
 */
public class FirstLeverMenu {
    
    /** 在面板中显示 */
    public static final boolean SHOW_IN_PANEL = true;
    
    /** 菜单id */
    private String id;// 可用于菜单项高亮
    
    /** 菜单名称 */
    private String name;
    
    /** 访问url，在没有子菜单情况下有效 */
    private String url;
    
    /** 子菜单集合 */
    private List<ActivatorMenu> menus;
    
    /** menu的所有id集合 */
    private String ids = "";// 将menu的所有id通过,分隔，用于页面中高亮显示
    
    /** 权限字符串 */
    private String permStr;
    
    /********* 面板相关字段 *********/
    
    /** 是否显示首页面板 */
    private boolean showPanel;
    
    /** 描述 */
    private String description;
    
    /** 图标url */
    private String logoUrl;
    
    /**
     * @return permStr
     */
    public String getPermStr() {
        return permStr;
    }
    
    /**
     * @param permStr 要设置的 permStr
     */
    public void setPermStr(String permStr) {
        this.permStr = permStr;
    }
    
    /**
     * 构造函数
     * 
     * @param id id
     * @param name name
     * @param url url
     * @param menus 菜单集合
     */
    public FirstLeverMenu(String id, String name, String url, List<ActivatorMenu> menus) {
        this(id, name, url, menus, null, false, null, null);
    }
    
    /**
     * 构造函数
     * 
     * @param id id
     * @param name name
     * @param url url
     * @param menus 菜单集合
     * @param permStr permStr
     */
    public FirstLeverMenu(String id, String name, String url, List<ActivatorMenu> menus, String permStr) {
        this(id, name, url, menus, permStr, false, null, null);
    }
    
    /**
     * 构造函数
     * 
     * @param id id
     * @param name name
     * @param url url
     * @param menus 菜单集合
     * @param permStr permStr
     * @param showPanel showPanel
     * @param description description
     * @param logoUrl logoUrl
     */
    protected FirstLeverMenu(String id, String name, String url, List<ActivatorMenu> menus, String permStr, boolean showPanel, String description,
        String logoUrl) {
        this.id = id;
        this.name = name;
        this.url = url;
        this.menus = menus;
        if (menus != null) {// 用于拼装,org,innerOrg...
            StringBuffer sb = new StringBuffer();
            for (ActivatorMenu menu : menus) {
                sb.append(",");
                sb.append(menu.getId());
            }
            this.ids = sb.toString();
        } else {
            this.ids = "," + id;
        }
        this.permStr = permStr;
        this.showPanel = showPanel;
        this.description = description;
        this.logoUrl = logoUrl;
    }
    
    /**
     * @return id
     */
    public String getId() {
        return id;
    }
    
    /**
     * @param id 要设置的 id
     */
    public void setId(String id) {
        this.id = id;
    }
    
    /**
     * @return name
     */
    public String getName() {
        return name;
    }
    
    /**
     * @param name 要设置的 name
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * @return url
     */
    public String getUrl() {
        return url;
    }
    
    /**
     * @param url 要设置的 url
     */
    public void setUrl(String url) {
        this.url = url;
    }
    
    /**
     * @return menus
     */
    public List<ActivatorMenu> getMenus() {
        return menus;
    }
    
    /**
     * @param menus 要设置的 menus
     */
    public void setMenus(List<ActivatorMenu> menus) {
        this.menus = menus;
    }
    
    /**
     * @return ids
     */
    public String getIds() {
        return ids;
    }
    
    /**
     * @param ids 要设置的 ids
     */
    public void setIds(String ids) {
        this.ids = ids;
    }
    
    /**
     * @return showPanel
     */
    public boolean isShowPanel() {
        return showPanel;
    }
    
    /**
     * @param showPanel 要设置的 showPanel
     */
    public void setShowPanel(boolean showPanel) {
        this.showPanel = showPanel;
    }
    
    /**
     * @return description
     */
    public String getDescription() {
        return description;
    }
    
    /**
     * @param description 要设置的 description
     */
    public void setDescription(String description) {
        this.description = description;
    }
    
    /**
     * @return logoUrl
     */
    public String getLogoUrl() {
        return logoUrl;
    }
    
    /**
     * @param logoUrl 要设置的 logoUrl
     */
    public void setLogoUrl(String logoUrl) {
        this.logoUrl = logoUrl;
    }
    
    @Override
    public String toString() {
        return "FirstLeverMenu [id=" + id + ", name=" + name + ", url=" + url + ", menus=" + menus + ", ids=" + ids + ", permStr=" + permStr
            + ", showPanel=" + showPanel + ", description=" + description + ", logoUrl=" + logoUrl + "]";
    }
    
    /**
     * 获取自身副本
     * 
     * @return 自身副本
     */
    public FirstLeverMenu copy() {
        return new FirstLeverMenu(id, name, url, menus, permStr, showPanel, description, logoUrl);
    }
}
